package com.cbg.archives.service;

import com.cbg.archives.dto.ArchivesModularDTO;
import com.cbg.archives.entity.EsArchivesModular;
import com.cbg.archives.repository.IEsArchivesModularRepository;
import com.cbg.dto.DirectionsDTO;
import com.shuyuwl.core.service.IDaoService;

import java.util.List;

/**
 * null service
 *
 * @author wangjuzheng
 * @since 2019-10-16
 */
public interface IEsArchivesModularService extends IDaoService<EsArchivesModular, Long, IEsArchivesModularRepository> {

    /**
     * 获取最大的排序
     *
     * @param archivesId 档案分类id
     * @param status     状态
     * @return 排序
     */
    Integer getMaxSort(Long archivesId, Byte status);

    /**
     * 根据模块id和状态获取档案模块信息
     *
     * @param id     模块id
     * @param status 状态
     * @return 档案模块信息
     */
    EsArchivesModular findByIdAndStatus(Long id, Byte status);

    /**
     * 根据分类id获取模块列表信息
     *
     * @param archivesId 分类id
     * @return 模块列表信息
     */
    List<ArchivesModularDTO> selectedArchives(Long archivesId);

    /**
     * 查询当前分类下是否存在同名的模块信息
     *
     * @param categoryId  分类id
     * @param modularName 模块名称
     * @return 模块信息
     */
    List<EsArchivesModular> findByPidAndModularName(Long categoryId, String modularName);

    /**
     * 删除分类下的模块信息
     *
     * @param archivesId 分类id
     */
    void deleteByArchivesId(Long archivesId);

    /**
     * 根据分类id获取模块位移所需要的信息
     *
     * @param archivesId 分类
     * @return 模块位移信息
     */
    List<DirectionsDTO> getDirectionsDTOs(Long archivesId);

    /**
     * 根据模块id和排序的添加数 修改排序
     *
     * @param modularIds 模块id
     * @param addSortNum 排序添加数
     */
    void updateSort(List<Long> modularIds, int addSortNum);
}
